//装饰器写法 target => 被构造函数/类执行时的目标
export default () => {
  /**
   * 渲染方法函数
   * 相当于 Render.tplReplace();
   * @param {*} template .tpl文件 模板
   * @param {*} replaceObject 替换的对象 包含{{}}内容
   */
  const tplReplace = (template, replaceObject) => {
    return template().replace(/{{(.*?)}}/g, (node, key) => replaceObject[key]);
  }

  /**
   * 创建li节点方法函数
   * @param {*} elem 创建什么元素 li/ul/div ?
   * @param {*} inner 创建元素后里面的文本内容
   */
  const createElement = (elem, inner) => {
    const oElem = document.createElement(elem);
    oElem.innerHTML = inner;
    return oElem;
  }

  const getTarget = (ev) => {
    const e = ev || window.event;
    return e.target || e.srcElement;
  }

  return {
    tplReplace,
    createElement,
    getTarget
  }
}